import { switchPages } from '@/consts/pages.js'
import filters from '@/utils/filters.js'


// 提示
function toast(title, mask = false, icon = 'none', duration = 2000) {
	uni.showToast({
		icon,
		mask,
		title,
		duration
	})
}

// 预览图片
function previewImages(images, index) {
	if(!Array.isArray(images)){
		images = images.split(',')
	}
	const newImages = images.map(item => filters.formatFile(item))
	uni.previewImage({
		current: index, //预览图片的下标
		urls: newImages //预览图片的地址，必须要数组形式，如果不是数组形式就转换成数组形式就可以
	})
}

// 拨打电话
function phoneCall(val){
	uni.makePhoneCall({
		phoneNumber: val
	})
}

// 获取位置信息
// H5端 IOS如果在本地调试需要将manifest.json中 "启用https协议"开启，访问本地 https才可以，否则成功和失败回调都进不去
function getLocation() {
	return new Promise((resolve, reject) => {
		uni.getLocation({
			type: 'gcj02',
			success: res => {
				resolve(res)
			},
			fail: err => {
				toast(err)
				reject(err)
			}
		});
	})
}

// 获取当前页面(组件)实例
function getVM() {
	const pages = getCurrentPages();
	const vm = pages[pages.length - 1].$vm;
	return vm;
}

// 刷新当前页面
function refreshCurrentPage() {
	const pages = getCurrentPages();
	const currentPage = pages[pages.length - 1]; //页面
	const pageUrl = currentPage.$page.fullPath;	// 页面路径
	const params = currentPage.options; // 参数
	let paramUrl = ''; //拼接后的参数
	// 当前页面是tab页面
	if (switchPages.indexOf(pageUrl) != -1) {
		// H5找不到onLoad方法，报错
		currentPage.onLoad(params);
		currentPage.onShow();
	} else {
		uni.redirectTo({
			url: pageUrl
		})
	}
}

export {
	getVM,
	refreshCurrentPage,
	previewImages,
	getLocation,
	toast,
	phoneCall
}